{
 "cells": [
  {
   "cell_type": "raw",
   "metadata": {
    "raw_mimetype": "text/restructuredtext"
   },
   "source": [
    ".. _nb_mutation:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Mutation"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "raw_mimetype": "text/restructuredtext"
   },
   "source": [
    ".. _nb_mutation_pm:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Polynomial Mutation ('real_pm', 'int_pm')\n",
    "\n",
    "Details about the mutation can be found in <cite data-cite=\"sbx\"></cite>. This mutation follows the same probability distribution as the simulated binary crossover."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuIAAAHwCAYAAADjFQoyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAfXElEQVR4nO3debRlZ1kn4N8LBZEhIMiQXo0SQEJiI2CqRSE2JNIdEdoQJSxZCgICdisaQeKwEDEqWc4awIEWiAGCE7gAlTREJUBElLaAprtNQhASjEyGBEImpnz9x9llrmXdGvc57x2eZ6299q29z/nOe2qf4Xe/++1v1xgjAADAat2quwAAANiOBHEAAGggiAMAQANBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABrs6C5gGarqw0nulOTy5lIAANjajk5y7RjjPgd7xy0ZxJPc6Xa3u91djzvuuLt2FwIAwNZ18cUX58Ybbzyk+27VIH75cccdd9ddu3Z11wEAwBa2c+fOvOc977n8UO5rjDgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCgwY7uAgBoVnXLz2P01QGwzegRBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANJgliFfVaVX1kqq6qKqurapRVecdxP1fPt1nVNVXz1ETAABsZDtmauf5SR6c5LokVyY59kDvWFXfluTp033vOFM9AACwoc01NOU5SY5Jcqck33+gd6qquyd5WZI/TLJrploAAGDDmyWIjzEuHGNcNsYYB3nX35nWz5qjDgAOU9UtCwBLNdfQlINWVU9NcmqSU8cYn6pD+NCvqvV60Q94aAwAAHRomTWlqu6d5EVJzhtjvLGjBgAA6LTyHvGqulWSV2Zxcubph9PWGGPnOo+xK8nxh9M2AAAsU8fQlOckeWSSx44xrml4fAAAaLfSoSlVdUySs5L87hjj/FU+NgAAbCSrHiP+NUmOSPK0NRfwGVU1suglT5LLpm2nrrg2AABYmVUPTbk8ySvW2ffYJEcleW2Sa6fbAgDAlrTSID7GeF+SZ+xtX1W9LYsg/rwxxgdXWRcAAKzaLEF8GkayeyjJUdP6YVV17vTzVWOMM+Z4LAAA2Arm6hF/SJKn7LHtvtOSJFckEcQBAGAy1yXuzxxj1D6Wow+gjROn2xqWAgDAltdyZU0AANjuBHEAAGggiAMAQANBHAAAGgjiAADQYNVX1gRgI6jqrgBg29MjDgAADQRxAABoIIgDAEADQRwAABoI4gAA0MCsKQDs3dqZVcboqwNgi9IjDgAADQRxAABoIIgDAEADQRwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggSAOAAANBHEAAGggiAMAQANBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABoI4gAA0GCWIF5Vp1XVS6rqoqq6tqpGVZ23zm3vX1U/XlVvrap/rKrPV9UnquqNVXXSHPUAAMBGt2Omdp6f5MFJrktyZZJj93Hbn0vynUn+Psn5Sa5O8oAkpyQ5pap+eIzx4pnqAgCADWmuIP6cLAL4B5M8MsmF+7jtm5P84hjjvWs3VtUjk/x5kl+uqteOMT42U20AALDhzDI0ZYxx4RjjsjHGOIDbnrtnCJ+2vz3J25LcNsnD56gLAAA2qo12suYXpvUXW6sAAIAlm2toymGrqnsneVSSG5K84wDvs2udXfsaow4AAO02RBCvqiOSvCbJEUl+bIxxTXNJAACwVO1BvKpuneTVSU5I8odJfuVA7zvG2LlOm7uSHD9LgQAAsAStY8SnEH5ekick+aMkTzqQEz4BAGCzawviVXWbJL+f5IlJfi/Jd40xnKQJAMC20DI0papum0UP+OOSvCrJ08YYN3fUAgAAHVbeIz6dmPn6LEL4KyKEAwCwDc3SI15VpyY5dfrnUdP6YVV17vTzVWOMM6afX5rkMUmuSvJPSV5QVXs2+bYxxtvmqA0AADaiuYamPCTJU/bYdt9pSZIrkuwO4veZ1ndL8oJ9tPm2mWoDAIANZ5YgPsY4M8mZB3jbE+d4TAAA2Mw22iXuAQBgWxDEAQCggSAOAAANBHEAAGggiAMAQANBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggSAOAAANBHEAAGggiAMAQANBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABoI4gAA0EAQBwCABju6CwBgE6i65ecx+uoA2EL0iAMAQINZgnhVnVZVL6mqi6rq2qoaVXXefu7z8Ko6v6qurqobq+r9VfXsqrr1HDUBAMBGNtfQlOcneXCS65JcmeTYfd24qh6X5I+T3JTkD5NcneTbkvx6khOSPGGmugAAYEOaa2jKc5Ick+ROSb5/XzesqjsleVmSLyU5cYzx9DHGjyZ5SJJ3JTmtqp44U10AALAhzRLExxgXjjEuG+OAzuA5Lcndk/zBGOPv1rRxUxY968l+wjwAAGx2HSdrfvO0fvNe9r0jyQ1JHl5VR6yuJAAAWK2O6QsfMK0/sOeOMcYXq+rDSf5DkvsmuXhfDVXVrnV27XOMOgAAdOvoEb/ztP7MOvt3b//yFdQCAAAtNvUFfcYYO/e2feopP37F5QBsbGsvygNAu44e8d093ndeZ//u7Z9eQS0AANCiI4hfOq2P2XNHVe1Icp8kX0zyoVUWBQAAq9QRxN86rR+9l32PSHL7JH89xvjc6koCAIDV6gjir0tyVZInVtV/3L2xqr4syQunf/52Q10AALAys5ysWVWnJjl1+udR0/phVXXu9PNVY4wzkmSMcW1VPTOLQP62qvqDLC5xf0oWUxu+LovL3gMAwJY116wpD0nylD223XdakuSKJGfs3jHGeENVPTLJTyZ5fJIvS/LBJD+S5MUHeIVOAADYtGYJ4mOMM5OceZD3eWeSx8zx+AAAsNl0jBEHAIBtTxAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABrMdWVNALaLqlt+diFkgEOmRxwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggSAOAAANBHEAAGiwo7sAAJaoqrsCANahRxwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggSAOAAANBHEAAGggiAMAQANBHAAAGrQG8ap6bFVdUFVXVtWNVfWhqnptVT2ssy4AAFi2tiBeVb+Y5M+SHJ/kzUlelOQ9SR6X5J1V9aSu2gAAYNl2dDxoVR2V5Iwkn0jyoDHGJ9fsOynJW5P8bJLzOuoDAIBl6+oRv/f02H+7NoQnyRjjwiSfTXL3jsIAAGAVuoL4ZUk+n+ShVXW3tTuq6hFJjkzyFx2FAQDAKrQMTRljXF1VP57k15L8fVW9IcmnktwvySlJ/jzJf9tfO1W1a51dx85VKwAALENLEE+SMcbZVXV5knOSPHPNrg8mOXfPISsAALCVdM6a8mNJXpfk3Cx6wu+QZGeSDyV5TVX90v7aGGPs3NuS5JIllg4AAIetJYhX1YlJfjHJn4wxfmSM8aExxg1jjPck+fYk/5TkuVV13476AABg2bp6xP/rtL5wzx1jjBuSvDuL2r5ulUUBAMCqdAXxI6b1elMU7t7++RXUAgAAK9cVxC+a1t9XVf9+7Y6q+tYkJyS5Kclfr7owAABYha5ZU16XxTzh/znJxVX1+iQfT3JcFsNWKslPjDE+1VQfAAAsVdc84jdX1WOSPCvJE7M4QfP2Sa5Ocn6SF48xLuioDQAAVqFzHvEvJDl7WgAAYFtpm0ccAAC2M0EcAAAatA1NAWALqLrl5zH66gDYhPSIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggekLAbaatVMKArBh6REHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggSAOAAANBHEAAGggiAMAQANBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABrs6C4AgC2i6pafx+irA2CTaO8Rr6pHVdXrq+rjVfW5qvpoVb2lqh7TXRsAACxLa494Vf1Skh9NcmWSP0lyVZK7J9mZ5MQk57cVBwAAS9QWxKvqmVmE8Fcm+b4xxuf32H+blsIAAGAFWoamVNURSc5K8pHsJYQnyRjjCysvDAAAVqSrR/y/ZDEE5ewkN1fVY5M8MMlNSd49xnhXU10AzMGJmwD71RXEv35a35TkvVmE8H9RVe9IctoY45/31UhV7Vpn17GHXSHAZrI2+AKwKXTNmnKPaf2jSUaS/5TkyCQPSnJBkkckeW1PaQAAsHxdPeK7fwH4YpJTxhiXT//+P1X17UkuTfLIqnrYvoapjDF27m371FN+/Iz1AgDArLp6xD89rd+7JoQnScYYNyR5y/TPh66yKAAAWJWuIH7ptP70Ovuvmda3W0EtAACwcl1B/C+zGBv+NVW1txp2n7z54dWVBAAAq9MSxMcYVyT50yRfleSH1+6rqpOTfEsWveVvXn11AACwfJ2XuH9Wkq9L8mvTPOLvTXKfJKcm+VKSZ4wxPtNYHwAALE1bEB9jXFlVO5O8IMkpWUxZeG0WPeU/P8Z4d1dtAACwbJ094pku2PND0wIAANtG18maAACwrQniAADQQBAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADQRwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKDBju4CADhEVd0VAHAY9IgDAEADQRwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggSAOAAANBHEAAGggiAMAQANBHAAAGuzoLgCAA1TVXQEAM9IjDgAADQRxAABoYGgKAMu1dkjNGH11AGwwgjgAPQR0YJszNAUAABoI4gAA0EAQBwCABoI4AAA0EMQBAKDBhgniVfWkqhrT8ozuegA2hKpbFgC2lA0RxKvqK5P8RpLrumsBAIBVaA/iVVVJfjfJp5K8tLkcgH56wQG2hfYgnuT0JN+c5GlJrm+uBQAAVqI1iFfVcUl+IcmLxhjv6KwFAABWqe0S91W1I8mrk3wkyfMOsY1d6+w69lDrAgCAVWgL4klekOTrknzTGOPGxjoAAGDlWoJ4VX1DFr3gvzrGeNehtjPG2LlO+7uSHH+o7QIAwLKtPIhPQ1JeleQDSX5q1Y8PQCMzwQD8i46TNe+Y5JgkxyW5ac1FfEaSn55u87Jp29kN9QEAwNJ1DE35XJJXrLPv+CzGjf9VkkuTHPKwFQAA2MhWHsSnEzP3egn7qjoziyD+yjHGy1dZFwAArNJGuKAPAABsO4I4AAA02FBBfIxx5hijDEsBAGCr21BBHAAAtgtBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoEHHJe4BYH1Vt/w8Rl8dAEumRxwAABoI4gAA0EAQBwCABoI4AAA0EMQBAKCBIA4AAA0EcQAAaGAecQD6rZ07HGCb0CMOAAANBHEAAGggiAMAQANBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoIEgDgAADQRxAABoIIgDAECDHd0FAJCkqrsCAFZMjzgAADQQxAEAoIEgDgAADQRxAABoIIgDAEADs6YArNLa2VHG6KsDgHZ6xAEAoIEgDgAADQRxAABoIIgDAEADQRwAABoI4gAA0MD0hQBd1k5lCMC2o0ccAAAa6BEHYONyASRgC2vpEa+qr6iqZ1TV66vqg1V1Y1V9pqr+qqqeXlV66gEA2NK6esSfkOS3k3wsyYVJPpLknkm+I8nLk3xrVT1hDN0fAABsTV1B/ANJTknypjHGzbs3VtXzkrw7yeOzCOV/3FMeAAAsV8sQkDHGW8cYf7o2hE/bP57kpdM/T1x5YQDLUHXLwqHz/whsMRtxLPYXpvUXW6sAAIAl2lCzplTVjiTfM/3zzQdw+13r7Dp2tqIAAGAJNlqP+C8keWCS88cYb+kuBgAAlmXD9IhX1elJnpvkkiRPPpD7jDF2rtPWriTHz1cdAADMa0P0iFfVDyZ5UZK/T3LSGOPq5pIAAGCp2oN4VT07yUuS/N8sQvjHm0sCAIClaw3iVfXjSX49yfuyCOGf7KwHAABWpS2IV9VPZXFy5q4kjxpjXNVVC8DszHkNwH60nKxZVU9J8rNJvpTkoiSn17/9srp8jHHuiksDAICV6Jo15T7T+tZJnr3Obd6e5NyVVAMAACvWdYn7M8cYtZ/lxI7aAABgFTbMPOIAcMDWDmcco68OgMPQPn0hAABsR4I4AAA0EMQBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANDABX0A2NzWXtwncYEfYNPQIw4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANDArCkAbA9rZ1cxswqwAQjiAAdrvUC35zR6ALAPgjgAW4ueb2CTEMQB1iPQAbBETtYEAIAGgjgAADQwNAXgcDhBE4BDpEccAAAa6BEHOBB6vgGYmSAOwNblFyhgAzM0BQAAGgjiAADQQBAHAIAGgjgAADRwsiYA2896J3GOsdo6gG1NjzgAADQQxAEAoIGhKQBrmXcagBURxIHtY23INhYYgGaCOIBecAAaCOIAsJvZVIAVEsSB7UkvOADNBHEAOBjONQBmIogDm5dABMAmZh5xAABooEcc2Hr0lAOwCQjiwObiJEs6rPe680sfcBhah6ZU1b2q6pyq+mhVfa6qLq+qs6vqLp11AVtI1S0LLNPa19p6rzuvR2CNth7xqrpfkr9Oco8kb0xySZKHJvnhJI+uqhPGGJ/qqg/YZAQbADaZzh7x38oihJ8+xjh1jPETY4xvTvLrSR6Q5KzG2oBDMVdv33o9i8I2W4nXNWx7LUF86g0/OcnlSX5zj90/neT6JE+uqjusuDTgYB1ImBA42M6W/R45kGEw3nuwIXX1iJ80rS8YY9y8dscY47NJ3pnk9km+cdWFwUptlC/Kgx3Puuyeb9jO9vUXobneI3O9t71v4bB0jRF/wLT+wDr7L8uix/yYJH+5XiNVtWudXQ+++OKLs3PnzkOvEDpshNfsejUcbG1ztQP8W4fy/jrY+8z1noct7uKLL06Sow/lvjUapluqqt9J8swkzxxjvHwv+89K8rwkzxtj/Pw+2lkviD8wyXVZDH1ZpWOn9SUrflxWy3HeHhzn7cFx3voc4+2h8zgfneTaMcZ9DvaOm3oe8THGhvr1e/cvBhutLublOG8PjvP24DhvfY7x9rBZj3PXGPHPTOs7r7N/9/ZPr6AWAABYua4gfum0Pmad/fef1uuNIQcAgE2tK4hfOK1Prqp/VUNVHZnkhCQ3JPmbVRcGAACr0BLExxj/kOSCLAa3P2uP3T+T5A5JXj3GuH7FpQEAwEp0nqz5A1lc4v7FVfWoJBcn+YYs5hj/QJKfbKwNAACWqmX6wn958KqvTPKzSR6d5CuSfCzJ65P8zBjjmrbCAABgyVqDOAAAbFddJ2sCAMC2JogDAEADQRwAABoI4gAA0EAQBwCABoI4AAA0EMT3o6ruVVXnVNVHq+pzVXV5VZ1dVXc5yHbuOt3v8qmdj07t3mtZtXPgDvc4V9Udquq7q+r3quqSqrq+qj5bVX9XVc+tqtsu+zmwb3O9l/do8xFV9aWqGlX1wjnr5dDMeZyr6vjpPX3l1NYnqurtVfU9y6idAzfjd/M3VdUbp/vfVFUfqarzq+rRy6qd/auq06rqJVV1UVVdO33GnneIbc3+2T8n84jvQ1XdL4urf94jyRuTXJLkoVlc/fPSJCeMMT51AO18xdTOMUnemuR/JTk2yeOSfDLJw8YYH1rGc2D/5jjO04f2/0xydZILk3wwyV2SnJLkqKn9R40xblrS02Af5nov79HmkUnen+RuSe6Y5KwxxvPnrJuDM+dxrqofTPKiJNckeVOSf0py1yQPTHLlGOOJsz8BDsiM383fn+S3klyfxcUEr0xyryTfkeT2SZ4/xjhrGc+Bfauq9yV5cJLrsjguxyZ5zRjjSQfZzuyf/bMbY1jWWZK8JclI8kN7bP+1aftLD7Cd/zHd/lf32H76tP3N3c91Oy9zHOckD0ny3Uluu8f2I5Psmtp5bvdz3a7LXO/lPe57Tha/eD1vauOF3c9zuy8zfmafnOTmqb0j97L/Nt3PdTsvM31m3ybJp5PcmOQBe+w7LslNSW5IckT3892OSxZB+f5JKsmJ03E9r+O1suxFj/g6pt+iPpjk8iT3G2PcvGbfkUk+lsUL5B5jjOv30c4ds+j1vjnJvxtjfHbNvlsl+VCSe0+PoVd8xeY6zvt5jO9K8pokfzbG+LbDLpqDsoxjXFWPS/KGJE9OsiPJ70aPeKs5j3NV/e8kX53kq0Z3bxn/yozfzfdM8vEk7x9jPHgv+9+f5GuT3M1roFdVnZjFX5oPqkd8Fd/vczBGfH0nTesL1h68JJnC9Duz+NPVN+6nnW9Mcrsk71wbwqd2dve4rH08Vmuu47wvX5jWXzyMNjh0sx7jqrpHkpclecMY45DGLLIUsxznqnpgkgcluSDJ1VV1UlWdMZ3r8aipA4U+c72fP5nkn5McU1X3X7ujqo7Jojf2fUL4praK7/fD5gNlfQ+Y1h9YZ/9l0/qYFbXDcqzi+HzvtH7zYbTBoZv7GL8si8/O/344RTG7uY7z10/rTyZ5Wxbn9fxykl9J8hdJ3ldVX33oZXKYZjnOYzEc4FlZvJd3VdUrq+rnq+pVWQwn/H9JnjBDvfTZFPlrR+eDb3B3ntafWWf/7u1fvqJ2WI6lHp/phK9HJ3lfFmOKWb3ZjnFVfW8WJ+B+5xjjEzPUxnzmOs73mNZPz+IEzccm+ask90zygiRPSvKmqvraMcbnD71cDtFs7+cxxmur6qNJfj/J2plwPpHFcDPDRTe3TZG/9IjDklTVdyQ5O4txiI8fY3xhP3dhA6uqo7M4nq8dY/xRbzUs0e7vxVsneeIY4/wxxrVjjMuyCGt/l0UP2uO7CmQeVfWkLP7KcVEWJ2jeflr/ZZLfSPIHfdWxXQji69v9m9Kd19m/e/unV9QOy7GU41NVp2bxIf7JJCc6EbfVXMf4nCxmWPiBOYpidnMd5937Pz7GeNfaHdNwhjdO/3zoQVfIHGY5ztM48HOyGILy5DHGJWOMG8cYl2RxEvauJE+YThRkc9oU+UsQX9+l03q9sUO7T+5Yb+zR3O2wHLMfn6p6QpLXZvHnzUeOMS7dz11YrrmO8fFZDFv45+niEqOqRhZ/wk6Sn5y2veHwyuUQzf2Zvd6X8zXT+nYHWBfzmus4n5zFFIZv38uJfDcnecf0z52HUiQbwqbIX8aIr+/CaX1yVd1qL9PenJDFHKN/s592/iaLXrQTqurIvUxfePIej8dqzXWcd9/nu5O8MouxpSfpCd8Q5jrGr8riT9d7un+SR2RxHsCuJO897Io5FHN+Zl+f5OiqusNepjV74LT+8Aw1c/DmOs5HTOu7r7N/93bnAWxes36/L4se8XWMMf4hi+mrjs7izOq1fibJHZK8eu2HdFUdW1XH7tHOdUlePd3+zD3a+cGp/bcIbD3mOs7T9qdkEdY+kuQRjunGMON7+fQxxjP2XHJLj/ibpm2/ubQnw7pmPM43JHlFki9L8sKqqjW3/9okT81iKtLXzf8s2J8ZP7MvmtanVdWD1u6oqockOS2LC768db7qWYaqus10jO+3dvuhvFY6uKDPPuzl0qgXJ/mGLOam/ECSh6+dY3T6M3XGGLVHO3te4v7dWZwQsvsS9w+fXjA0mOM4V9VJWZz0c6ssxh3+414e6tNjjLOX9DTYh7ney+u0/dS4oM+GMONn9p2SvD2LK+b+bRbzDd8zi0uf3y7Js8cYL1r282HvZjzO5yR5Wha93q9PckUWoe3UJLdNcvYY4zlLfjrsxXSe1anTP49K8i1ZzGKz+xeoq8YYZ0y3PTqLv1BdMcY4eo92Duq10mKuS3Ru1SXJV2bxJfuxLN6sV2Qxc8Jd9nLbkel8nr3su2uSF033//zU3jlJ7tX9HC2Hf5yz6CUb+1ku736e23mZ6728l9vuPvYucb8Blhk/s++Y5Kwsvqw/l8WY8QuSnNz9HC3zHOcsrqr41Czmi78mi790XJ3FrClP7H6O23nJYgTBAX2fZvHL07rfsQfzWulY9IgDAEADY8QBAKCBIA4AAA0EcQAAaCCIAwBAA0EcAAAaCOIAANBAEAcAgAaCOAAANBDEAQCggSAOAAANBHEAAGggiAMAQANBHAAAGgjiAADQQBAHAIAGgjgAADQQxAEAoMH/B40012VZ5ptNAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 248,
       "width": 369
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from pymoo.interface import mutation\n",
    "from pymoo.factory import get_mutation\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def show(eta_mut):\n",
    "    a = np.full((5000, 1), 0.5)\n",
    "    off = mutation(get_mutation(\"real_pm\", eta=eta_mut, prob=1.0), a)\n",
    "\n",
    "    plt.hist(off, range=(0,1), bins=200, density=True, color=\"red\")\n",
    "    plt.show()\n",
    "\n",
    "show(30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 248,
       "width": 362
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "show(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Basically, the same can be applied to discrete variables as well: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 248,
       "width": 378
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "def show(eta_mut):\n",
    "    a = np.full((10000, 1), 0)\n",
    "    off = mutation(get_mutation(\"int_pm\", eta=eta_mut, prob=1.0), a, xl=-20, xu=20)\n",
    "\n",
    "    plt.hist(off, range=(-20, 20), bins=40, density=True, color=\"red\")\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "show(30)\n"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "raw_mimetype": "text/restructuredtext"
   },
   "source": [
    ".. _nb_mutation_bitflip:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Bitflip Mutation ('bin_bitflip')\n",
    "\n",
    "The bitlip mutation randomly flips a bit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 251,
       "width": 251
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def show(M):\n",
    "    plt.figure(figsize=(4,4))\n",
    "    plt.imshow(M, cmap='Greys',  interpolation='nearest')\n",
    "    plt.show()\n",
    "    \n",
    "a = np.full((100,100), False)\n",
    "mut = mutation(get_mutation(\"bin_bitflip\", prob=0.1), a)\n",
    "\n",
    "show(a != mut)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### API"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "raw_mimetype": "text/restructuredtext"
   },
   "source": [
    ".. autofunction:: pymoo.factory.get_mutation\n",
    "    :noindex:\n",
    "\n",
    ".. autofunction:: pymoo.model.mutation.Mutation\n",
    "    :noindex:"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Raw Cell Format",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
